package br.domsd.pocketcontrol.action;

import java.util.ArrayList;
import java.util.Calendar;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import javax.xml.parsers.ParserConfigurationException;

import br.domsd.pocketcontrol.model.Expense;
import br.domsd.pocketcontrol.model.MonthExpenses;

public class Controlador 
{
	/*
	HashMap<Date, Expense> gastosPorDia;
	MonthExpenses gastosMensais;
	Calculadora calculadora = new Calculadora();
	
	public void carregarGastosMensais()
	{
		gastosMensais = new MonthExpenses();
		
		gastosMensais.setMes("09");
		gastosMensais.setAno("2012");
		gastosMensais.setSaldoInicial(1000D);
		gastosMensais.setDataInicio(gerarData(3, 9, 2012));
		gastosMensais.setDataFim(gerarData(30, 9, 2012));
		calculadora.setGastosMensais(gastosMensais);
		
	}
	
	public void gerarGastosMensais()
	{
		carregarGastosMensais();
		
		Date data1 = gerarData(3,9,2012);
		
		Expense gasto = new Expense(data1, 120D);
		Expense gasto2 = new Expense(data1, 26D);
		Expense gasto3 = new Expense(data1, 13D);
		
		Date data2 = gerarData(5,9,2012);
		
		Expense gasto4 = new Expense(data2, 70D);
		Expense gasto5 = new Expense(data2, 27D);
		
		Date data3 = gerarData(6,9,2012);
		
		Expense gasto6 = new Expense(data3, 32D);
		
		List<Expense> gastos = new ArrayList<Expense>();
		gastos.add(gasto);
		gastos.add(gasto2);
		gastos.add(gasto3);
		gastos.add(gasto4);
		gastos.add(gasto5);
		gastos.add(gasto6);
		
		gastosMensais.setGastosDiarios(gastos);
		
		
		
	}
	
	public void carregarGastosPorDia()
	{
		gastosPorDia = new HashMap<Date, Expense>();
		
		for(Expense gasto : gastosMensais.getGastosDiarios())
		{
			adicionarGasto(gasto);
		}
		
	}
	
	public void adicionarGasto(Expense gasto)
	{
		Date dataGasto = gasto.getData();
		
		if(gastosPorDia.containsKey(dataGasto))
		{
			Double valorTotal = gastosPorDia.get(dataGasto).getValor() + gasto.getValor();
			Expense novoGasto = new Expense(dataGasto, valorTotal);
			
			gastosPorDia.put(gasto.getData(), novoGasto);
		}
		else
		{
			gastosPorDia.put(dataGasto, gasto);
		}
	}
	
	public void imprimirTabelaDeGastosPorDia()
	{
		for(Date data : gastosPorDia.keySet())
		{
			System.out.println("Data: " + dataFormatada(data) + " Valor gasto: " + gastosPorDia.get(data).getValor());
		}
	}
	
	public void imprimirPropriedades()
	{
		System.out.println("Saldo inicial: " + calculadora.getGastosMensais().getSaldoInicial());
		System.out.println("Total gasto: " + calculadora.getTotalGastos());
		System.out.println("Saldo disponivel: " + calculadora.getSaldoAtualDisponivel());
	}
	
	public Date gerarData(int dia, int mes, int ano)
	{
		Calendar cal = Calendar.getInstance();
		cal.set(Calendar.DAY_OF_MONTH, dia);
		cal.set(Calendar.MONTH, mes - 1);
		cal.set(Calendar.YEAR, ano);
		
		return cal.getTime();
	}
	
	public MonthExpenses getGastosMensais()
	{
		return gastosMensais;
	}

	public String dataFormatada(Date data)
	{
		String dataFormatada = data.getDay() + "/" + data.getMonth() + "/" + (data.getYear() + 1900);

		return dataFormatada;
	}
	
	public static void main(String[] args) throws ParserConfigurationException {
		Controlador controlador = new Controlador();
		
		controlador.gerarGastosMensais();
		controlador.carregarGastosPorDia();
		controlador.imprimirTabelaDeGastosPorDia();
		controlador.imprimirPropriedades();
		
		//XMLWriter xmlWriter = new XMLWriter(controlador.getGastosMensais());
		//xmlWriter.write("gastos_" + controlador.getGastosMensais().getMes() + "-" + controlador.getGastosMensais().getAno() + ".xml");
	}*/
}
